<!DOCTYPE HTML>
<html lang="en">
<head>
  <meta charset="utf8">
  <title>Test for nsIConsoleMessages</title>
  <script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
  <script type="text/javascript;version=1.8" src="common.js"></script>
  <!-- Any copyright is dedicated to the Public Domain.
     - http://creativecommons.org/publicdomain/zero/1.0/ -->
</head>
<body>
<p>Make sure that nsIConsoleMessages are logged. See bug 859756.</p>

<script class="testbody" type="text/javascript;version=1.8">
"use strict";
SimpleTest.waitForExplicitFinish();

let expectedMessages = [];

function startTest()
{
  removeEventListener("load", startTest);
  attachConsole(["PageError"], onAttach);
}

function onAttach(aState, aResponse)
{
  onLogMessage = onLogMessage.bind(null, aState);
  aState.dbgClient.addListener("logMessage", onLogMessage);

  expectedMessages = [{
    message: "hello world! bug859756",
    timeStamp: /^\d+$/,
  }];

  Services.console.logStringMessage("hello world! bug859756");

  info("waiting for messages");
}

let receivedMessages = [];

function onLogMessage(aState, aType, aPacket)
{
  is(aPacket.from, aState.actor, "packet actor");
  info("received message: " + aPacket.message);

  let found = false;
  for (let expected of expectedMessages) {
    if (expected.message == aPacket.message) {
      found = true;
      break;
    }
  }
  if (!found) {
    return;
  }

  receivedMessages.push(aPacket);
  if (receivedMessages.length != expectedMessages.length) {
    return;
  }

  aState.dbgClient.removeListener("logMessage", onLogMessage);

  checkObject(receivedMessages, expectedMessages);

  closeDebugger(aState, () => SimpleTest.finish());
}

addEventListener("load", startTest);
</script>
</body>
</html>
